with IConv; 
package StrEnc is

   subtype Gbk_String is String;
   subtype Big5_String is String;
   subtype UTF8_String is String;

   function UTF8_Length (S : UTF8_String) return Natural;

   function Stdout_GBK (S : Gbk_String) return String with Inline;

   function Stdout_UTF8 (S : UTF8_String) return String with Inline;

   function Stdout_BIG5 (S : BIG5_String) return String with Inline;

   GBK_To_UTF8  : iconv.Handle := iconv.Create("cp936", "utf-8");
   BIG5_To_UTF8 : iconv.Handle := iconv.Create("cp950", "utf-8");
   UTF8_To_BIG5 : iconv.Handle := iconv.Create("utf-8", "cp950");
   UTF8_To_GBK  : iconv.Handle := iconv.Create("utf-8", "cp936");

end StrEnc;
